_require local "../../../basis/main/List.smi"
_require local "../../../basis/main/Bool.smi"
_require local "../../../basis/main/CharVector.smi"
_require local "../../../basis/main/String.smi"
_require "../../../basis/main/Substring.smi"

functor SMLSharp_SMLNJ_OS_PathFn (OSPathBase : sig
  exception Path
  datatype arc_kind = Null | Parent | Current | Arc of string
  val classify : string -> arc_kind
  val parentArc : string
  val currentArc : string
  val validArc : string -> bool
  val validVolume : bool * Substring.substring -> bool
  val splitVolPath : string
                     -> bool * Substring.substring * Substring.substring
  val joinVolPath : bool * string * string -> string
  val arcSepChar : char
  val sameVol : string * string -> bool
end) =
struct
  exception Path = OSPathBase.Path
  exception InvalidArc
  val parentArc : string
  val currentArc : string
  val fromString : string -> {isAbs : bool, vol : string, arcs : string list}
  val toString : {isAbs : bool, vol : string, arcs : string list} -> string
  val validVolume : {isAbs : bool, vol : string} -> bool
  val getVolume : string -> string
  val getParent : string -> string
  val splitDirFile : string -> {dir : string, file : string}
  val joinDirFile : {dir : string, file : string} -> string
  val dir : string -> string
  val file : string -> string
  val splitBaseExt : string -> {base : string, ext : string option}
  val joinBaseExt : {base : string, ext : string option} -> string
  val base : string -> string
  val ext : string -> string option
  val mkCanonical : string -> string
  val isCanonical : string -> bool
  val mkAbsolute : {path : string, relativeTo : string} -> string
  val mkRelative : {path : string, relativeTo : string} -> string
  val isAbsolute : string -> bool
  val isRelative : string -> bool
  val isRoot : string -> bool
  val concat : string * string -> string
  val fromUnixPath : string -> string
  val toUnixPath : string -> string
end
